Some packet transport protocols, such as the Transmission Control Protocol (TCP), use a mechanism of acknowledgment (ACK) and retransmission to ensure that messages are delivered reliably in their entirety. The receiver of packets on a TCP connection sends ACK packets back to the transmitter to indicate which data packets it has received. When the transmitter fails to receive a positive acknowledgment within a certain timeout period, it retransmits the unacknowledged packet or packets.
A selective acknowledgment (SACK) mechanism for TCP was defined by Mathis et al., in “TCP Selective Acknowledgment Options,” published as Request for Comments (RFC) 2018 by the Internet Engineering Task Force (IETF), October, 1996. According to the authors, with selective acknowledgments, the data receiver can inform the sender about all segments that have arrived successfully, so the sender need retransmit only the segments that have actually been lost.
RDMA protocols enable the network interface controller (NIC) of one computer to read and write data over a network from and to the memory of another computer without involving the operating system of either computer in the memory access operations. These RDMA operations are typically performed in response to work requests submitted to the NIC by application processes running on the host processor, and thus enable applications on different nodes of the network to exchange data efficiently, with high bandwidth and low latency. A number of RDMA protocols are known in the art, such as the InfiniBand™ (IB) RDMA protocols that are used over IB switch fabrics, and RDMA over Converged Ethernet (RoCE), which is designed to run over Ethernet networks. In RoCE, the IB RDMA layer runs directly over the Ethernet link layer (in RoCE version 1) or over the User Datagram Protocol (UDP) transport layer on Internet Protocol (IP) networks (in RoCE version 2).